<?php

/**
 * Description of Test
 *
 * @author Dingo
 */
class Modul_Front_Uzytkownik_Rejestracja extends Modul_Front_Abstract {

    protected $nazwaModulu = 'Front_Uzytkownik_Rejestracja';

    public function inicjalizuj() {
        $this->strona = array('tytul' => 'Zarejestruj się!');
        $this->szablon = array('tpl1' => '../Front/Uzytkownik/Rejestracja/Formularz.tpl');
        $formKontakt = new Form_Rejestracja();
        $this->daneTPL['form'] = Form_Rejestracja::generuj();

        //sprawdzanie strony
        if (isset($this->param['akcja']) &&
                $this->param['akcja'] == 'zarejestruj') {
            $this->zarejestruj();
        } else if (isset($this->param['akcja']) &&
                $this->param['akcja'] == 'potwierdz') {
            $this->potwierdz();
        }
    }

    private function zarejestruj() {
        if (Form_Valid::isEmpty(Form_Valid::getFormValue('login'))) {
            $bledy[] = "Twoj login jest pusty";
        } else if (Form_Valid::isTooLong(Form_Valid::getFormValue("login"), 20)) {
            $bledy[] = "Twoj login jest za długi";
        } else if (!Form_Valid::isTooShort(Form_Valid::getFormValue("login"), 3)) {
            $bledy[] = "Twoj login jest za krótki";
        }

        if (Form_Valid::isEmpty(Form_Valid::getFormValue('email'))) {
            $bledy[] = "Twoj email jest pusty";
        } else if (!Form_Valid::isEmail(Form_Valid::getFormValue("email"))) {
            $bledy[] = "Adres email jest nieprawidłowy";
        }

        if (Form_Valid::checkLength(Form_Valid::getFormValue("kodpocztowy"), 5, 6)) {
            $bledy[] = "Twój kod pocztowy jest niepoprawny";
        }

        if (Form_Valid::isTooLong(Form_Valid::getFormValue("imieinazwisko"), 50)) {
            $bledy[] = "Twoje imie i nazwisko jest za długie";
        }
        if (!Form_Valid::isTooShort(Form_Valid::getFormValue("imieinazwisko"), 7)) {
            $bledy[] = "Twoje imie i nazwisko jest za krótkie";
        }
        if (Form_Valid::isTooLong(Form_Valid::getFormValue("ulica"), 50)) {
            $bledy[] = "Twoja ulica jest napisana niepoprawnie";
        }
        if (!Form_Valid::isTooShort(Form_Valid::getFormValue("ulica"), 4)) {
            $bledy[] = "Twoja ulica jest napisana niepoprawnie";
        }

        if (Form_Valid::isEmpty(Form_Valid::getFormValue('haslo'))) {
            $bledy[] = "Twoje hasło jest puste";
        } else if (!Form_Valid::isTooShort(Form_Valid::getFormValue("haslo"), 6)) {
            $bledy[] = "Twoja hasło jest za krótkie";
        } else if (Form_Valid::isTooLong(Form_Valid::getFormValue("haslo"), 20)) {
            $bledy[] = "Twoj hasło jest za długie";
        }

        if (Form_Valid::isEmpty(Form_Valid::getFormValue('miasto'))) {
            $bledy[] = "Pole miasto jest wymagane";
        } else if (Form_Valid::isTooLong(Form_Valid::getFormValue("miasto"), 20)) {
            $bledy[] = "Twoje miasto jest napisane niepoprawnie";
        } else if (!Form_Valid::isTooShort(Form_Valid::getFormValue("miasto"), 3)) {
            $bledy[] = "Twoje miasto jest napisane niepoprawnie";
        }

        if (!Form_Valid::compare(Form_Valid::getFormValue('haslo'), Form_Valid::getFormValue('haslo2'))) {
            $bledy[] = "Twoje hasła nie zgadzają się ze sobą ";
        }

        if (!Form_Valid::isUnsignedNumber(Form_Valid::getFormValue('nrtelefonu'))) {
            $bledy[] = "Twoj numer jest niepoprawny ";
        }

        if (!Form_Valid::isAlphaNumeric(Form_Valid::getFormValue('login'))) {
            $bledy[] = "Login powinien składać się z liter i/lub cyfr";
        }

        //sprawdzanie czy user jest juz w bazie (login)
        $user = Sql::FindFirst('Uzytkownik', array('login' => Form_Valid::getFormValue('login')));
        if ($user !== false) {
            $bledy[] = "Istnieje użytkownik o takiej nazwie";
        }

        if (Form_Valid::isValid($bledy)) {
            $user = new Uzytkownik();
            $user->populate($_POST);
            unset($_POST);
            $user->status = 2;
            $user->haslo = md5($user->haslo . 'login' . $user->login);
            $znaki = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'q', 'w', 'e',
                'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l',
                'z', 'x', 'c', 'v', 'b', 'n', 'm');
            for ($i = 0; $i < 10; $i++)
                $user->kodaktywacyjny .= $znaki[array_rand($znaki)];
            $user->save();
            $wiadomosc = "Witaj {$user->imieinazwisko},<br />" .
                    'Zarejestrowałeś/aś się na stronie cms.local.' .
                    'Jeżeli to nie Ty się zarejestrowałeś/aś zignoruj tego maila.<br /><br />' .
                    '<b>Kliknij w poniższy link, aby aktywować konto:</b><br />' .
                    "<a href=\"http://cms.local/rejestracja/akcja,potwierdz,login,{$user->login},hash,{$user->kodaktywacyjny}.html\">".
                    "<b>http://cms.local/rejestracja/akcja,potwierdz,login,{$user->login},hash,{$user->kodaktywacyjny}.html".
                    '</b></a><br /><br />Pozdrawiam Grupa cms.local';
            if (new Mail($user->email, 'Link aktywacyjny cms.local', $wiadomosc)) {
                $this->daneTPL['powodzenie'] =
                        "Konto zostało zarejestrowane, aby je aktywować sprawdź swojego maila.";
            }
            else
                $bledy[] = 'Nie udało się wysłać maila. Powiadom administratora!';
        } else {
            $this->daneTPL['bledy'] = $bledy;
        }
    }

    private function potwierdz() {
        if (isset($this->param['hash']) && isset($this->param['login'])) {
            $user = Sql::FindFirst('Uzytkownik', array('login' => $this->param['login'],
                        'kodaktywacyjny' => $this->param['hash']));
            if ($user === false) {
                $this->daneTPL['bledy'][] = 'Błąd. Sprawdź login i kod. Konto może być już aktywne!';
            } else {
                $user->status = 1;
                $user->kodaktywacyjny = rand(0,111111);
                $user->save();
                $this->daneTPL['powodzenie'] =
                        'Konto zostało aktywowane. Może się teraz zalogować.';
            }
        }
        else
        {
            $this->daneTPL['bledy'][] = 'Zły link aktywacyjny!';
        }
    }

}